• 締切済み

FindFirstFileのファイル属性の戻り値が違う?

Windows2000 Pro と、Windows2000 Server とで、 FindFirstFile関数の戻り値となる構造体の、 WIN32_FIND_DATA の dwFileAttributes As Long の戻り値が、どうも違うようです。 (端末によっても違うような…?) Win2000 の Pro と Server との違いなどが明記されて 居る場所をご存知の方いらっしゃったら教えてください。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

Server/Proの違いによるものではなく、属性が違うだけだと思います。 dwFileAttributesは属性です 以下の定数が入ります。 FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_HIDDEN FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_NOT_CONTENT_INDEXED FILE_ATTRIBUTE_OFFLINE FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_SYSTEM FILE_ATTRIBUTE_TEMPORARY これらの定数の意味は、他のAPI関数でSetFileAttributesに詳細が出ています。 参考URLを見てください。

参考URL:
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_setfileattributes.htm

関連するQ&A

  • FindFirstFile ハンドル開放

    dat.datファイルの情報を、WIN32_FIND_DATA構造体に得るために  handle = FindFirstFile("dat.dat", &win32finddata);  FindClose(handle);  //この後でwin32finddataを利用。 としているんだけど、今回はハンドルを使わないから  FindFirstFile("dat.dat", &win32finddata);  //この後でwin32finddataを利用。 として、FindFirstFileの返り値の取得と、FindClose関数を 省略してもいいんですか?

  • ポインタを使って構造体の配列を戻り値にするには

    関数の戻り値を構造体の配列(アドレスを受け渡しを利用して)にしたいのですがうまくゆきません。 以下のプログラムではコンパイルはできるのですが、 a0 = 2 a1 = 4198512 a2 = 4329332 と表示されてしまいa1,a2がうまくゆきません。 ********************************************* #include<stdio.h> struct test{ int a; }; struct test *func(void); void main(void) { struct test *data;//構造体ポインタ int i; data = func(); //ポインタにtest関数の戻り値(アドレス)を代入 for(i=0;i<=2;i++){   printf("a%d = %d\n",i,(data+i)->a); //構造体要素を表示 } } struct test *func(void) { struct test data[3]={1,2,3}; //構造体配列を定義 return (&data[0]); //構造体配列の先頭アドレスを返す } ************************************************* test関数から受ける取ったアドレス(&data[0])をポインタ(data)に代入して1づつずらして表示させれば a0=1,a1=2,a=3 となると思ったのですがどこが間違っているのでしょうか? よろしくお願いします。

  • 関数の戻り値が複数ある場合

    C言語初心者です。 関数の戻り値を返す場合、return 変数名;と記述しますよね。 配列を返す場合、ポインタを使用しないで返すにはどうしたらいいですか? 例えば合計と平均を計算する関数があり その結果を配列に入れてmainに返すなど。 以前他の方の質問のコメントに 配列の要素が固定であれば、構造体にして返す方法もあります。 struct array { int x[10]; }; struct array func() {  struct array a;  ...  return a; } -- とあったのですが、構造体の要素が全てint型ならば 配列ではダメなのですか?

  • Functionで戻り値を複数返す方法

    Functionで戻り値を複数取得したいのですが うまくいきません。(NULLの使い方が不正ですとエラー) 戻り値に配列を使う場合 呼び出し側はどのように記述すればいいでしょうか? <呼び出し側> Private Sub a() wkkekka1 = 処理結果(Kensu, Houhou)(0) ⇒ ここでエラー wkkekka2 = 処理結果(Kensu, Houhou)(1) wkkekka3 = 処理結果(Kensu, Houhou)(2) End Sub <関数> Public Function 処理結果(ByRef lngKensu As Long, ByRef strHouhou As String) Dim kekka(3) As Double If lngKensu = 1000 and strHouhou = aaaaaa then kekka(0) =  0.1 kekka(1) =  2   kekka(2) =  300 Else ↓ (省略)     ↓ End If 処理結果 = kekka End Function

  • API関数でOS判定

    教えてください。 Win32のAPI関数「GetVersionEx」を使用して、OSの判定をおおなっているのですが、「Windows2000」「WindowsCE」「WindowsME」の判定方法がわかりません。その他の「WindowsNT」「Windows3.51」「Windows95/98」はAPI関数の戻り値(構造体)の「プラットフォームID」と「マイナーバージョン」でわかるのですが…。 どなたか回答をお願いします。 ちなみに、「WindowsME」でのマイナーバージョンを調べてらら「90」の値が返ってきました。これは、「90未満」「90以下」「90以上」「90超」のどれなんでしょうか…。

  • 不正な構造体の演算

    ある構造体を戻り値として関数からかえして、変数に代入すると不正な構造体の演算というエラーになります。 これは、どういったことが原因と考えられますか?

  • ファイルの入出力

    氏名・身長・体重が入っているファイルからデータを構造体として読み取りその人の肥満度を表示するプログラムを作りたいのですが一考にわかりません。。。誰か知恵を貸してくれませんか 肥満度は20未満が「やせすぎ」20以上25未満は「普通」25以上は「肥満」としています。ファイルには27にんのデータが入っています。肥満度の計算は関数を作成で、関数名はbmiで引数は構造体、戻り値は実数です。肥満度の計算は体重÷身長÷身長です。 構造体は自分で定義します。よろしくお願いします

  • GetLongPathName関数について

    VB6でTempフォルダをGetTempPath関数で取得するとショートファイル名でパスが返るので、 取得したショートファイル名をGetLongPathName関数でロングファイル名にしようと しているのですが上手く出来ません。 Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _ (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Private Declare Function GetLongPathName Lib "kernel32" Alias _ "GetLongPathNameA" (lpszShortPath As String, lpszLongPath As String, _ cchBuffer As Long) As Long Dim nName As String Dim Ret As Long Dim Buf As String nName = String$(260, vbNullChar) Ret = GetTempPath(Len(nName), nName) nName = Left$(nName, InStr(nName, vbNullChar) - 1) Buf = String$(260, vbNullChar) Ret = GetLongPathName(nName, Buf, 260) Buf = Left$(Buf, InStr(Buf, vbNullChar) - 1) Tempフォルダはショートファイル名(C:\DOCUME~1\Owner\LOCALS~1\Temp\)は 取得されますがGetLongPathName関数でロングファイル名が 返りません、戻り値は0が返ってしまいます。 コードが間違えているのか、元々取得出来ないのか分かりませんが ご存知の方教えて下さいますようお願い致します。 尚、可能ならばFindFirstFile関数でロングファイル名を取得するのではでなくて GetLongPathNameで取得したいと思っています。

  • ファイル読み込みエラーになる。

    ファイル読み込み時に読み込んだデータサイズと、それを格納するストラクタのsizeofで取得したサイズが異なる為エラーになってしまいます。 実際のデータ→10バイト 構造体→WORD、DWORD、DWORDの10バイト なのですが、 blRet = ReadFile(hNDFile[bFile], cpReadData, sizeof(構造体),&outFileSize, 0 ); とすると、構造体のsizeofの値が12になる為関数は戻り値1(エラー)で返ってきてしまいます。 取得した値自体は問題ないのですが。。 逆にこの問題を解決しようとして構造体宣言の部分を#pragma pack(push , 1)で囲うと、sizeof(構造体)の値は10バイトとなり、readfile関数は正常に終わるのですが、読み取ったデータの値が想定していないものになってしまいます。 何がおかしいかわからず困っています。。

  • Windows2000 と Windows2000server の違い

    社内用のローカルサーバを作ることになりまして、Windowsサーバを考えているんですが、Windows2000Pro と Windows2000Server の具体的な違いってなんでしょうか? Win2000Proで問題が無いようならそれで行きたいのですが。 取り急ぎ知りたいので参考URLだけでも結構です。 よろしくお願いします。