9

Mingw を使用して Windows でプログラムをコンパイルしています。開いているファイル記述子のアクセス モードを取得するにはどうすればよいですか?

4

2 に答える 2

2

Win32.hlpによると、APIBOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)はKERNEL32で関数を提供します。 LPBY_HANDLE_FILE_INFORMATIONは、BY_HANDLE_FILE_INFORMATION*です。ここで、BY_HANDLE_FILE_INFORMATIONは次のとおりです。

typedef struct _BY_HANDLE_FILE_INFORMATION { // bhfi  
    DWORD    dwFileAttributes; 
    FILETIME ftCreationTime; 
    FILETIME ftLastAccessTime; 
    FILETIME ftLastWriteTime; 
    DWORD    dwVolumeSerialNumber; 
    DWORD    nFileSizeHigh; 
    DWORD    nFileSizeLow; 
    DWORD    nNumberOfLinks; 
    DWORD    nFileIndexHigh; 
    DWORD    nFileIndexLow; 
} BY_HANDLE_FILE_INFORMATION;

上記の関数を呼び出した後、trueが返された場合、にBY_HANDLE_FILE_INFORMATIONはファイルに関連するデータが含まれています。 フラグdwFileAttributesが含まれている可能性があります。FILE_ATTRIBUTE_READ_ONLY

それ以上のものが必要な場合は、次のものもあります。

BOOL GetKernelObjectSecurity(
 HANDLE Handle,                             // handle of object to query
 SECURITY_INFORMATION RequestedInformation, // requested information
 PSECURITY_DESCRIPTOR pSecurityDescriptor,  // address of security descriptor
 DWORD nLength,                             // size of buffer for security descriptor 
 LPDWORD lpnLengthNeeded                    // address of required size of buffer
);

APIリファレンスは、aが何であるかについては必然的にあいまいSECURITY_DESCRIPTORですが、特定のプロパティを取得するためのパラメータとしてそのアドレスを使用して、他の多くの関数を呼び出すことができます。これSECURITY_INFORMATIONDWORD、これらの関数のどれを呼び出すかを指定する定数です。詳細については、http://msdn.microsoft.com/en-us/library/aa446641%28VS.85%29.aspxを参照してください。

編集-2番目のコードセクションは厄介に見え続けますが、APIリファレンスへのリンクは、少し掘り下げればどこに行く必要があるかを示します。

于 2011-09-15T03:33:23.530 に答える
0

私が知る限り、あなたはできません。

https://web.archive.org/web/20161107234935/http://www.zemris.fer.hr/predmeti/os1/misc/Unix2Win.htmは、UNIX から Windows への移植の優れたガイドです。

Cygwin POSIX「エミュレーション」を使用できますか?

于 2011-09-09T08:52:52.793 に答える