2007年11月07日
BOOL DeviceIoControl(
HANDLE hDevice, // デバイス、ファイル、ディレクトリいずれかのハンドル
DWORD dwIoControlCode, // 実行する動作の制御コード
LPVOID lpInBuffer, // 入力データを供給するバッファへのポインタ
DWORD nInBufferSize, // 入力バッファのバイト単位のサイズ
LPVOID lpOutBuffer, // 出力データを受け取るバッファへのポインタ
DWORD nOutBufferSize, // 出力バッファのバイト単位のサイズ
LPDWORD lpBytesReturned, // バイト数を受け取る変数へのポインタ
LPOVERLAPPED lpOverlapped // 非同期動作を表す構造体へのポインタ
);
パラメータ
hDevice
動作を実行するデバイスのハンドルを指定します。デバイスハンドルを取得するには、CreateFile 関数を呼び出します。
dwIoControlCode
動作を表す制御コードを指定します。この値は、実行する特定の動作と、実行に使うデバイスのタイプを識別します。次の値が定義されています。 値 意味
FSCTL_ALLOW_EXTENDED_DASD_IO パーティションの読み取りまたは書き込みの呼び出しを行う際に、I/O 境界をチェックしないようファイルシステムのドライバに指示します。代わりに、デバイスドライバが境界チェックを行います。
FSCTL_CREATE_USN_JOURNAL ターゲットボリュームに NTFS 変更ジャーナルストリームを作成するか、既存の変更ジャーナルストリームに変更を加えます。
FSCTL_DELETE_REPARSE_POINT ファイルまたはディレクトリの再解析ポイントを削除します。
FSCTL_DELETE_USN_JOURNAL ボリュームから NTFS 変更ジャーナルを削除するか、NTFS 変更ジャーナルの削除通知を待ちます。
FSCTL_DISMOUNT_VOLUME ボリュームをマウント解除します。
FSCTL_ENUM_USN_DATA 指定された 2 つの境界の間にある NTFS 変更ジャーナルエントリを列挙する列挙型を作成します。
FSCTL_GET_COMPRESSION ファイルまたはディレクトリの圧縮状態を取得します。
FSCTL_GET_HFS_INFORMATION 入力ハンドルに関連付けられているファイルに関する、Macintosh のファインダ情報を返します。
FSCTL_GET_REPARSE_POINT ファイルまたはディレクトリの再解析ポイントデータを返します。
FSCTL_LOCK_VOLUME ボリュームをロックします。
FSCTL_MARK_HANDLE 指定されたファイルまたはディレクトリと、その NTFS 変更ジャーナルレコードに、そのファイルまたはディレクトリに加えられた変更に関する情報のマークを付けます。
FSCTL_OPBATCH_ACK_CLOSE_PENDING クライアントアプリケーションがファイルを閉じようとしていることをサーバーへ通知します。アプリケーションはファイルに対する Oplock(opportunity lock)が解除されようとしていることを通知した後に、この動作を利用できます。
FSCTL_OPLOCK_BREAK_ACK_NO_2 ファイルに対する Oplock が解除されようとしていることを知らせる通知に応答します。アプリケーションはこの動作を使って、ファイルに対するすべての Oplock を解除しますが、ファイルは開いたままの状態に保ちます。
FSCTL_OPLOCK_BREAK_ACKNOWLEDGE ファイルに対する排他 Oplock が解除されようとしていることを知らせる通知に応答します。アプリケーションはこの動作を使って、ファイルに対してレベル 2 の Oplock を実施するよう指示します。
FSCTL_OPLOCK_BREAK_NOTIFY Oplock が解除されるまで待機することを呼び出し側のアプリケーションに許可します。
FSCTL_QUERY_ALLOCATED_RANGES ファイル内で、ディスク容量が割り当てられているファイル範囲を検索します。
FSCTL_QUERY_FAT_BPB FAT16 または FAT12 のボリュームで最初の 36 バイトを返します。
FSCTL_QUERY_USN_JOURNAL 現在の NTFS 変更ジャーナル、およびそのレコードとその容量に関する情報を照会します。
FSCTL_READ_COMPRESSION 将来の利用に備えて予約されています。
FSCTL_READ_USN_JOURNAL 指定された 2 つの USN 値の間に発生した NTFS 変更ジャーナルのレコードセットを、呼び出し側のプロセスへ返します。
FSCTL_RECALL_FILE Windows 2000 の階層格納域管理ソフトウェアである Remote Storage が管理している格納域メディアからファイルを再度呼び出します。
FSCTL_REQUEST_BATCH_OPLOCK ファイルに対するバッチ Oplock を要求します。
FSCTL_REQUEST_FILTER_OPLOCK ファイルに対するフィルタ Oplock を要求します。
FSCTL_REQUEST_OPLOCK_LEVEL_1 ファイルに対するレベル 1 の Oplock を要求します。
FSCTL_REQUEST_OPLOCK_LEVEL_2 ファイルに対するレベル 2 の Oplock を要求します。
FSCTL_SET_COMPRESSION ファイルまたはディレクトリの圧縮状態を設定します。
FSCTL_SET_REPARSE_POINT ファイルまたはディレクトリの再解析ポイントを設定します。
FSCTL_SET_SPARSE ファイルにスパースファイルのマークを付けます。
FSCTL_SET_ZERO_DATA ファイルの一定の範囲にあるすべてのバイトを 0 に設定します。
FSCTL_UNLOCK_VOLUME ボリュームをロック解除します。
FSCTL_WRITE_COMPRESSION 将来の利用に備えて予約されています。
IOCTL_DISK_CHECK_VERIFY 現在は使われていません。IOCTL_STORAGE_CHECK_VERIFY を使ってください。
IOCTL_DISK_EJECT_MEDIA 現在は使われていません。IOCTL_STORAGE_EJECT_MEDIA を使ってください。
IOCTL_DISK_FORMAT_TRACKS 連続した一連のディスクトラックをフォーマットします。
IOCTL_DISK_GET_DRIVE_GEOMETRY 物理ディスクのジオメトリに関する情報を取得します。
IOCTL_DISK_GET_DRIVE_LAYOUT ディスクの各パーティションに関する情報を提供します。
IOCTL_DISK_GET_MEDIA_TYPES 現在は使われていません。IOCTL_STORAGE_GET_MEDIA_TYPES を使ってください。
IOCTL_DISK_GET_PARTITION_INFO ディスクのパーティション情報を取得します。
IOCTL_DISK_LOAD_MEDIA 現在は使われていません。IOCTL_STORAGE_LOAD_MEDIA を使ってください。
IOCTL_DISK_MEDIA_REMOVAL 現在は使われていません。IOCTL_STORAGE_MEDIA_REMOVAL を使ってください。
IOCTL_DISK_PERFORMANCE ディスクのパフォーマンス情報を提供します。
IOCTL_DISK_REASSIGN_BLOCKS ディスクのブロックを代替セクタ領域へ割り当てます。
IOCTL_DISK_SET_DRIVE_LAYOUT ディスクのパーティションを作成します。
IOCTL_DISK_SET_PARTITION_INFO ディスクのパーティションタイプを設定します。
IOCTL_DISK_VERIFY ディスクの一定の範囲を論理フォーマットします。
IOCTL_SERIAL_LSRMST_INSERT 回線とモデムのステータスデータをデータストリームに配置する機能を有効または無効にします。
IOCTL_STORAGE_CHECK_VERIFY リムーバブルデバイスのメディア変更の有無をチェックします。
IOCTL_STORAGE_EJECT_MEDIA SCSI デバイスからメディアを取り出します。
IOCTL_STORAGE_GET_MEDIA_TYPES メディアサポートに関する情報を取得します。
IOCTL_STORAGE_LOAD_MEDIA メディアをデバイスへロードします。
IOCTL_STORAGE_MEDIA_REMOVAL メディア取り出しメカニズムを有効または無効にします。
各制御コードの詳細情報については、各デバイスのドキュメントを参照してください。このドキュメントは特に、パラメータ lpInBuffer、nInBufferSize、lpOutBuffer、nOutBufferSize、lpBytesReturned の詳細な使い方について説明します。
lpInBuffer
動作を実行するために必要なデータを保持する 1 つのバッファへのポインタを指定します。
dwIoControlCode パラメータが、入力データを必要としない動作を指定している場合、このパラメータは NULL でもかまいません。
nInBufferSize
lpInBuffer が指すバッファのバイト単位のサイズです。
lpOutBuffer
動作の出力データを受け取る 1 つのバッファへのポインタを指定します。
dwIoControlCode パラメータが、出力データを作成しない動作を指定している場合、このパラメータは NULL でもかまいません。
nOutBufferSize
lpOutBuffer が指すバッファのバイト単位のサイズです。
lpBytesReturned
lpOutBuffer が指すバッファへ格納されるデータのバイト単位のサイズを受け取る、変数へのポインタを指定します。
出力バッファが小さすぎて返されたデータを収容できない場合、この関数の呼び出しは失敗し、GetLastError 関数は ERROR_INSUFFICIENT_BUFFER エラーコードを返します。返されるバイト数は 0 になります。
出力バッファが小さすぎてデータ全体を収容できず、一部のエントリだけを収容する場合、オペレーティングシステムはバッファに収容できるデータだけを返し、この関数の呼び出しは失敗します。GetLastError 関数は ERROR_MORE_DATA エラーコードを返し、lpBytesReturned は返されたデータの量を示します。アプリケーションでは新しい開始ポイントを指定したうえで、同じ動作を指定して DeviceIoControl をもう一度呼び出す必要があります。
lpOverlapped が NULL の場合、lpBytesReturned に NULL を指定できません。動作によって出力データを作成しない場合であっても、lpOutBuffer は NULL にできますが、DeviceIoControl 関数は lpBytesReturned が指す変数を使います。このような動作の後、この変数の値には意味はありません。
lpOverlapped が NULL ではない場合、lpBytesReturned に NULL を指定できます。動作がオーバーラップ( 非同期)である場合、GetOverlappedResult 関数を呼び出して、返されたバイト数を取得できます。hDevice が 1 つの I/O 完了ポートに関連付けられている場合、GetQueuedCompletionStatus 関数を呼び出して、返されたバイト数を取得できます。
lpOverlapped
1 つの OVERLAPPED 構造体へのポインタを指定します。
FILE_FLAG_OVERLAPPED フラグをセットして hDevice を開いた場合、lpOverlapped は 1 つの有効な OVERLAPPED 構造体を指さなければなりません。この場合、動作はオーバーラップ( 非同期)動作として実行されます。FILE_FLAG_OVERLAPPED をセットしてデバイスを開き、lpOverlapped が NULL である場合、この関数は予測不可能な方法で失敗します。
FILE_FLAG_OVERLAPPED フラグをセットせずに hDevice で指定したデバイスを開いた場合、lpOverlapped は無視され、動作が完了するかエラーが発生するまで DeviceIoControl 関数は制御を戻しません。
戻り値
関数が成功すると、0 以外の値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。
解説
FILE_FLAG_OVERLAPPED をセットして hDevice で指定したデバイスを開き、lpOverlapped パラメータが 1 つの OVERLAPPED 構造体を指している場合、動作はオーバーラップ( 非同期)動作として実行されます。この場合、この OVERLAPPED 構造体は、CreateEvent 関数を呼び出すことによって作成された手動リセットイベントオブジェクトのハンドルを保持していなければなりません。
・・・・ワカンネ。
理解できません。無理です。VC++とか無理。
触って2週間で通信とか無理。書き方すら解らんしw
VBだけなら良かったのになぁ。
教えて、偉い人。
Posted at 2007/11/07 11:34:52 | |
トラックバック(0) |
就活日記+職場日記 | 日記
2007年10月25日
本命の会社へ先日書類を送付しました。
●●●●●化粧品様へ。
そして今日、メールにて書類審査の合否を頂きました。
内心ドキドキ。。。
超大手メーカーだから簡単に不合格になりやすい傾向あるじゃん?
募集人数も多そうだし。
この考えは私だけかもしれないけど。
メールの標題は
【一次試験のご案内】
ん?
一次試験?書類審査が一次試験ってことなのか?
まぁ、ご案内って事は「合否のご案内」って事なんだろうな。。。
心を一つにして(私一人だから、もともと一つだけど)
いざっ!
尋常にっ!
オープンッ!!!
・・・・
・・・・・・・・・
ウェェェ~~~~~イィwwww
ハハッハァ~w
一次試験の~♪日程が~♪
29日の~♪月曜日~♪
だけどもだっけ~どぉ♪
その日はもちろん~♪
仕事があるに決まってる♪
でもそんなの関係ねぇ!!!
どうやら書類審査は合格したらしい♪
以下内容一部
お送りいただきました書類から選考をさせていただきまして、是非一次試験にご
参加いただきたいと思います。
いや、まだ浮かれてはいけない。
ここまでは行けて当たり前なんだ。
書類のみだもの。
でもな・・・
問題が発生したんだ・・・
当日は作文試験・適性検査・面接を行います。
ささささささささ作文っ??
ててててててて適正検査っ???
めめめめめ面せ・・・
あ、これは普通か。
やばいよぉ~やばいよぉ~(←出川哲郎風)
PCに依存してるから漢字書けるかわからねぇよぉ・・・(涙)
最近覚えた漢字(?)は「ショ糖」なのに。。。
面接も面接で緊張するんだよなぁ。
なんだろう、学生時代の就職活動思い出す。
今、そんな気分w
でも俺、頑張る!
29日は1日有給貰うぜっ!
あっ、今耳鳴り。
まぁ、頑張りますので、応援して下さい。。。
PS.因みに今いる会社は募集人数50人以上いたそうです。
5/50の確率で採用されたって訳か。
Posted at 2007/10/25 14:53:32 | |
トラックバック(0) |
就活日記+職場日記 | 日記
2007年10月18日
プップー!!!
ハイテンション野郎のハナウィの登場だぁ~い!
おうおうおうおうおうおうおう?
文句あんのかぁ!?
別に・・・
プップーwwwww
チョット流行遅れww流行遅れwww
デーモン小暮www
プップップップ・・・
プレコ~ォル~♪wwwwwwww
今日さww面接用の履歴書と職務履歴書と添え状書いたのwww
しかも会社でwwww会社でwwwwwww
ダメだっつーのwwバレたらクビがドゥ~~~ンッwwww
因みに静岡市内ww
ラッキーwww
クッキーwww
ほしのあき~wwww
ラッキーマンw古っww
んでも受かるか不安ww
だってさー、自分の能力大体解っちゃってるしw
まぁ、慣れてるんだけどね、落とされるのは。
これで落ちたら次ねぇーっつーの。
やってられねぇーっつーの・・・
もう俺、違う職に行った方が良いのかね・・・
俺ダメかもしんね・・・・・・・
このまま終わりたくねぇんよ・・・・・・・
はぁ・・・・・・
Posted at 2007/10/18 17:28:30 | |
トラックバック(0) |
就活日記+職場日記 | 日記