Win32 API 日本語リファレンス
ホームStorage.FileSystem › IDiskQuotaControl

IDiskQuotaControl

COM
IID7988b572-ec89-11cf-9c00-00aa00a14f56継承元IConnectionPointContainer自前メソッド開始 vtbl5

公式ドキュメント

単一の NTFS ファイル システム ボリュームのディスク クォータ機能を制御します。

メソッド 21

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 5 HRESULT Initialize(LPWSTR pszPath, BOOL bReadWrite)

要求されたアクセス権で NTFS ファイル システム ボリュームを開き、新しい DiskQuotaControl オブジェクトを初期化します。

pszPathLPWSTRinボリューム ルートへのパス (C:\ や \\yourcomputer など)。
bReadWriteBOOLinこの値が TRUE の場合、ボリュームは読み取り/書き込みモードで開かれます。FALSE の場合、ボリュームは読み取り専用モードで開かれます。クォータ ファイルにデータを書き込むには、TRUE を指定し、このメソッドの呼び出しが成功して返る必要があります。

戻り値

このメソッドは、次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_BAD_PATHNAME
要求されたパス名が無効です。
ERROR_FILE_NOT_FOUND
要求されたファイルまたはオブジェクトが見つかりません。
ERROR_INITIALIZED
コントローラー オブジェクトは既に初期化されています。多重初期化は許可されていません。
ERROR_INVALID_NAME
要求されたファイル パスが無効です。
ERROR_NOT_SUPPORTED
ファイル システムがクォータをサポートしていません。
ERROR_PATH_NOT_FOUND
要求されたファイル パスが見つかりません。
vtbl 6 HRESULT SetQuotaState(DWORD dwState)

クォータ システムの状態を設定します。

dwStateDWORDin

ボリュームに適用する状態。適切なビットを設定するには、次のマクロを使用します。

マクロ 有効化 追跡 強制
DISKQUOTA_SET_DISABLED いいえ いいえ いいえ
DISKQUOTA_SET_TRACKED はい はい いいえ
DISKQUOTA_SET_ENFORCED はい はい はい

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
dwState パラメーターが正しくありません。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。

解説(Remarks)

すべての状態属性を変更できるわけではありません。変更できるのは、有効化 (enable)、追跡 (track)、強制 (enforce) の各属性です。

vtbl 7 HRESULT GetQuotaState(DWORD* pdwState)

クォータ システムの状態を示すフラグのセットを取得します。

pdwStateDWORD*inout

クォータの状態フラグ。このパラメーターには、次のフラグを 1 つ以上含めることができます。

意味
DISKQUOTA_FILESTATE_INCOMPLETE
0x00000100
ボリュームのクォータ情報が最新ではありません。クォータはおそらく無効になっています。
DISKQUOTA_FILESTATE_REBUILDING
0x00000200
ボリュームはクォータ情報を再構築中です。
DISKQUOTA_STATE_DISABLED
0x00000000
ボリュームでクォータが有効になっていません。
DISKQUOTA_STATE_ENFORCE
0x00000002
クォータが有効で、制限値が強制されます。ユーザーはクォータ制限を超えることができません。
DISKQUOTA_STATE_TRACK
0x00000001
クォータは有効ですが、制限値は強制されません。ユーザーはクォータ制限を超えることができます。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pdwState パラメーターが正しくありません。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 8 HRESULT SetQuotaLogFlags(DWORD dwFlags)

ボリューム上のユーザー関連クォータ イベントのログ記録を制御します。

dwFlagsDWORDin

ボリュームに適用するログ フラグ。dwFlags パラメーターの適切なビットを設定するには、次のマクロを使用します。

マクロ 説明
DISKQUOTA_SET_LOG_USER_LIMIT ユーザーのクォータ制限違反のログ記録を有効/無効にします。設定すると、ユーザーが割り当てられたハード クォータ制限を超えたときにイベント ログ エントリが作成されます。
DISKQUOTA_SET_LOG_USER_THRESHOLD ユーザーの警告しきい値違反のログ記録を有効/無効にします。設定すると、ユーザーが割り当てられた警告しきい値を超えたときにイベント ログ エントリが作成されます。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 9 HRESULT GetQuotaLogFlags(DWORD* pdwFlags)

ボリューム上のユーザー関連クォータ イベントのログ記録を制御するフラグを取得します。

pdwFlagsDWORD*inout

ボリュームのクォータ ログ フラグ。フラグ値の内容を取得するには、次のマクロを使用します。

マクロ 説明
DISKQUOTA_IS_LOGGED_USER_LIMIT 設定されている場合、ユーザーが割り当てられたハード クォータ制限を超えたときにイベント ログ エントリが作成されます。
DISKQUOTA_IS_LOGGED_USER_THRESHOLD 設定されている場合、ユーザーが割り当てられた警告しきい値を超えたときにイベント ログ エントリが作成されます。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pdwFlags パラメーターが正しくありません。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 10 HRESULT SetDefaultQuotaThreshold(LONGLONG llThreshold)

既定の警告しきい値を変更します。

llThresholdLONGLONGin既定の警告しきい値 (バイト単位)。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 11 HRESULT GetDefaultQuotaThreshold(LONGLONG* pllThreshold)

ボリュームの既定のクォータ警告しきい値を取得します。

pllThresholdLONGLONG*inout既定の警告しきい値 (バイト単位)。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pllThreshold パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 12 HRESULT GetDefaultQuotaThresholdText(LPWSTR pszText, DWORD cchText)

ボリュームの既定の警告しきい値を取得します。

pszTextLPWSTRinテキスト文字列。
cchTextDWORDinバッファーのサイズ (文字数単位)。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pszText パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 13 HRESULT SetDefaultQuotaLimit(LONGLONG llLimit)

既定のクォータ制限を変更します。

llLimitLONGLONGin既定のクォータ制限 (バイト単位)。この値が -1 の場合、ユーザーのクォータは無制限です。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 14 HRESULT GetDefaultQuotaLimit(LONGLONG* pllLimit)

ボリュームの既定のクォータ制限を取得します。

pllLimitLONGLONG*inoutクォータ制限を受け取る変数へのポインター。この値が -1 の場合、ユーザーのクォータは無制限です。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pllLimit パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 15 HRESULT GetDefaultQuotaLimitText(LPWSTR pszText, DWORD cchText)

ボリュームの既定のクォータ制限を取得します。制限はテキスト文字列で表現されます (例: 10.5 MB)。

pszTextLPWSTRinテキスト文字列。ボリュームに制限がない場合、返される文字列は "No Limit" (ローカライズされた文字列) です。バッファーが小さすぎる場合、文字列はバッファーに収まるように切り詰められます。
cchTextDWORDinバッファーのサイズ (文字数単位)。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pszText パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 16 HRESULT AddUserSid(PSID pUserSid, DISKQUOTA_USERNAME_RESOLVE fNameResolution, IDiskQuotaUser** ppUser)

指定したユーザーのクォータ エントリをボリューム上に新規追加します。ユーザーはセキュリティ識別子 (SID) で識別されます。

pUserSidPSIDinユーザーの SID。
fNameResolutionDISKQUOTA_USERNAME_RESOLVEin

ユーザー アカウント情報の取得方法を示します。ボリュームのクォータ情報では、ユーザーは SID で識別されます。ユーザー アカウント情報 (ドメイン名、アカウント名、フル ネームなど) は、ネットワーク ドメイン コントローラーから取得する必要があります。ネットワークに接続されていない場合はローカル コンピューターから取得します。このパラメーターには、次のいずれかの値を指定できます。

意味
DISKQUOTA_USERNAME_RESOLVE_ASYNC
2
ユーザー アカウント情報を非同期に解決します。 AddUserSid は直ちに戻ります。呼び出し元は、情報が利用可能になったときに通知を受け取るために IDiskQuotaEvents インターフェイスを実装する必要があります。以前の要求時に情報がキャッシュされていた場合、オブジェクトが処理され次第、通知が行われます。それ以外の場合、このメソッドはネットワーク ドメイン コントローラーから情報を取得した後、 IDiskQuotaEvents に通知します。
DISKQUOTA_USERNAME_RESOLVE_NONE
0
ユーザー アカウント情報を解決しません。
DISKQUOTA_USERNAME_RESOLVE_SYNC
1
ユーザー アカウント情報を同期的に解決します。 AddUserSid は情報の解決後に戻ります。情報がディスク クォータの SID キャッシュに存在する場合は直ちに返されます。それ以外の場合、このメソッドは情報を探索する必要があり、数秒かかることがあります。
ppUserIDiskQuotaUser**out新しく作成されたクォータ ユーザー オブジェクトの IDiskQuotaUser インターフェイス ポインターへのポインター。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_INVALID_SID
指定された SID が不明です。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pUserSid または ppUser パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。

解説(Remarks)

NTFS ファイル システムは、ユーザーがボリュームに最初に書き込みを行ったときに、ユーザーのクォータ エントリを自動的に作成します。自動的に作成されたエントリには、そのボリュームの既定の警告しきい値とハード クォータ制限値が割り当てられます。このメソッドを使用すると、ユーザーがボリュームに情報を書き込む前にユーザーのクォータ エントリを作成できます。そのため、ボリュームの既定設定とは異なる警告しきい値やハード クォータ制限値をあらかじめ割り当てることができます。

vtbl 17 HRESULT AddUserName(LPWSTR pszLogonName, DISKQUOTA_USERNAME_RESOLVE fNameResolution, IDiskQuotaUser** ppUser)

指定したユーザーのクォータ エントリをボリューム上に新規追加します。ユーザーはドメイン名とアカウント名で識別されます。

pszLogonNameLPWSTRinユーザーのアカウント ログオン名の文字列。
fNameResolutionDISKQUOTA_USERNAME_RESOLVEin

ユーザー アカウント情報の取得方法を示します。ボリュームのクォータ情報では、ユーザーは SID で識別されます。ユーザー アカウント情報 (コンテナー、ログオン名、表示名など) は、ネットワーク ドメイン コントローラーから取得する必要があります。ネットワークに接続されていない場合はローカル コンピューターから取得します。このパラメーターには、次のいずれかの値を指定できます。

意味
DISKQUOTA_USERNAME_RESOLVE_ASYNC
2
ユーザー アカウント情報を非同期に解決します。 AddUserName は直ちに戻ります。呼び出し元は、情報が利用可能になったときに通知を受け取るために IDiskQuotaEvents インターフェイスを実装する必要があります。以前の要求時に情報がキャッシュされていた場合、オブジェクトが処理され次第、通知が行われます。それ以外の場合、このメソッドはネットワーク ドメイン コントローラーから情報を取得した後、 IDiskQuotaEvents に通知します。
DISKQUOTA_USERNAME_RESOLVE_NONE
0
ユーザー アカウント情報を解決しません。
DISKQUOTA_USERNAME_RESOLVE_SYNC
1
ユーザー アカウント情報を同期的に解決します。 AddUserName は情報の解決後に戻ります。情報がディスク クォータの SID キャッシュに存在する場合は直ちに返されます。それ以外の場合、このメソッドは情報を探索する必要があり、数秒かかることがあります。
ppUserIDiskQuotaUser**out新しく作成されたクォータ ユーザー オブジェクトの IDiskQuotaUser インターフェイス ポインターへのポインター。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
S_FALSE
ユーザーは既に存在します。追加されませんでした。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
ERROR_USER_UNKNOWN
指定されたユーザー名が不明です。
E_INVALIDARG
ポインター パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。

解説(Remarks)

NTFS ファイル システムは、ユーザーがボリュームに最初に書き込みを行ったときに、ユーザーのクォータ エントリを自動的に作成します。自動的に作成されたエントリには、そのボリュームの既定の警告しきい値とハード クォータ制限値が割り当てられます。このメソッドを使用すると、ユーザーがボリュームに情報を書き込む前にユーザーのクォータ エントリを作成できます。そのため、ボリュームの既定設定とは異なる警告しきい値やハード クォータ制限値をあらかじめ割り当てることができます。

vtbl 18 HRESULT DeleteUser(IDiskQuotaUser* pUser)

ボリュームのクォータ情報ファイルからユーザー エントリを削除します。

pUserIDiskQuotaUser*inクォータ レコードを削除対象としてマークするユーザーの IDiskQuotaUser インターフェイスへのポインター。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_FILE_EXISTS
そのユーザーはボリューム上にファイルを所有しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pUser パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。

解説(Remarks)

このメソッドは、実際にはボリュームからクォータ エントリを削除しません。エントリに削除のマークを付けるだけです。実際の削除は、後で NTFS ファイル システムによって実行されます。IDiskQuotaControl::DeleteUser の呼び出し後も、 IDiskQuotaUser インターフェイスは引き続き有効です。このメソッドは、メモリ上のユーザー オブジェクトを削除しません。ユーザー オブジェクトを解放するには、IUnknown::Release を呼び出してください。

vtbl 19 HRESULT FindUserSid(PSID pUserSid, DISKQUOTA_USERNAME_RESOLVE fNameResolution, IDiskQuotaUser** ppUser)

ボリュームのクォータ情報から特定のユーザー エントリを検索します。

pUserSidPSIDinユーザーの SID へのポインター。
fNameResolutionDISKQUOTA_USERNAME_RESOLVEin

ユーザー アカウント情報の取得方法を示します。ボリュームのクォータ情報では、ユーザーは SID で識別されます。ユーザー アカウント情報 (ドメイン名、アカウント名、フル ネームなど) は、ネットワーク ドメイン コントローラーから取得する必要があります。ネットワークに接続されていない場合はローカル コンピューターから取得します。このパラメーターには、次のいずれかの値を指定できます。

意味
DISKQUOTA_USERNAME_RESOLVE_ASYNC
2
ユーザー アカウント情報を非同期に解決します。 FindUserSid は直ちに戻ります。呼び出し元は、情報が利用可能になったときに通知を受け取るために IDiskQuotaEvents インターフェイスを実装する必要があります。以前の要求時に情報がキャッシュされていた場合、オブジェクトが処理され次第、通知が行われます。それ以外の場合、このメソッドはネットワーク ドメイン コントローラーから情報を取得した後、 IDiskQuotaEvents に通知します。
DISKQUOTA_USERNAME_RESOLVE_NONE
0
ユーザー アカウント情報を解決しません。
DISKQUOTA_USERNAME_RESOLVE_SYNC
1
ユーザー アカウント情報を同期的に解決します。 FindUserSid は情報が解決された後に戻ります。情報がディスク クォータの SID キャッシュに存在する場合は直ちに返されます。それ以外の場合、このメソッドは情報を探索する必要があり、数秒かかることがあります。
ppUserIDiskQuotaUser**outクォータ ユーザー オブジェクトの IDiskQuotaUser インターフェイス ポインターを受け取るポインター。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
ERROR_INVALID_SID
ユーザーの SID が無効です。
E_INVALIDARG
pUserSid または ppUser パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。

解説(Remarks)

このメソッドは、クォータ ファイルにそのユーザーのクォータ レコードが存在しない場合でも、ユーザー オブジェクトを返します。これは、ユーザーの自動追加と既定のクォータ設定という考え方と一貫しています。要求されたユーザーのクォータ エントリが現時点で存在せず、そのユーザーがディスク領域を要求すればクォータ ファイルに追加される状況であれば、返されるユーザー オブジェクトの警告しきい値とハード クォータ制限は、ボリュームの既定設定と同じ値になります。

vtbl 20 HRESULT FindUserName(LPWSTR pszLogonName, IDiskQuotaUser** ppUser)

ボリュームのクォータ情報から特定のエントリを検索します。

pszLogonNameLPWSTRinユーザーのアカウント ログオン名へのポインター。
ppUserIDiskQuotaUser**outクォータ ユーザー オブジェクトの IDiskQuotaUser インターフェイス ポインターへのポインター。

戻り値

このメソッドは、ファイル システム エラーまたは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_INVALID_SID
ユーザーの SID が無効です。
ERROR_NONE_MAPPED
その SID に対して利用可能なマッピングがありません。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
pUserSid または ppUser パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_FAIL
予期しないファイル システム エラーが発生しました。
E_UNEXPECTED
予期しない例外が発生しました。

解説(Remarks)

このメソッドは、クォータ ファイルにそのユーザーのクォータ レコードが存在しない場合でも、ユーザー オブジェクトを返します。これは、ユーザーの自動追加と既定のクォータ設定という考え方と一貫しています。要求されたユーザーのクォータ エントリが現時点で存在せず、そのユーザーがディスク領域を要求すればクォータ ファイルに追加される状況であれば、返されるユーザー オブジェクトの警告しきい値とハード クォータ制限は、ボリュームの既定設定と同じ値になります。

vtbl 21 HRESULT CreateEnumUsers(PSID* rgpUserSids, DWORD cpSids, DISKQUOTA_USERNAME_RESOLVE fNameResolution, IEnumDiskQuotaUsers** ppEnum)

ボリューム上のクォータ ユーザーを列挙するための列挙子オブジェクトを作成します。

rgpUserSidsPSID*inout列挙に含めるユーザー オブジェクトを表すセキュリティ識別子 (SID) ポインターの配列。この値が NULL の場合、すべてのユーザー エントリが列挙されます。
cpSidsDWORDinrgpUserSids 配列内の項目数。rgpUserSidsNULL の場合は無視されます。
fNameResolutionDISKQUOTA_USERNAME_RESOLVEin

ユーザー アカウント情報の取得方法を示します。ボリュームのクォータ情報では、ユーザーは SID で識別されます。ユーザー アカウント情報 (ドメイン名、アカウント名、フル ネームなど) は、ネットワーク ドメイン コントローラーから取得する必要があります。ネットワークに接続されていない場合はローカル コンピューターから取得します。このパラメーターには、次のいずれかの値を指定できます。

意味
DISKQUOTA_USERNAME_RESOLVE_ASYNC
2
ユーザー アカウント情報を非同期に解決します。 IEnumDiskQuotaUsers::Next メソッドは直ちに戻ります。呼び出し元は、情報が利用可能になったときに通知を受け取るために IDiskQuotaEvents インターフェイスを実装する必要があります。以前の要求時に情報がキャッシュされていた場合、オブジェクトが処理され次第、通知が行われます。それ以外の場合、このメソッドはネットワーク ドメイン コントローラーから情報を取得した後、 IDiskQuotaEvents に通知します。
DISKQUOTA_USERNAME_RESOLVE_NONE
0
ユーザー アカウント情報を解決しません。
DISKQUOTA_USERNAME_RESOLVE_SYNC
1
ユーザー アカウント情報を同期的に解決します。 IEnumDiskQuotaUsers::Next メソッドは、情報の解決後に戻ります。情報がディスク クォータの SID キャッシュに存在する場合は直ちに返されます。それ以外の場合、このメソッドは情報を探索する必要があり、数秒かかることがあります。
ppEnumIEnumDiskQuotaUsers**outIEnumDiskQuotaUsers 列挙子へのポインターを受け取るポインター。

戻り値

このメソッドは、次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
ppEnum パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 22 HRESULT CreateUserBatch(IDiskQuotaUserBatch** ppBatch)

複数ユーザーのクォータ設定を同時に更新する処理を最適化するためのバッチ処理オブジェクトを作成します。

ppBatchIDiskQuotaUserBatch**outIDiskQuotaUserBatch インターフェイス ポインターへのポインター。

戻り値

このメソッドは、次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_ACCESS_DENIED
呼び出し元のアクセス権が不足しています。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_INVALIDARG
ppBatch パラメーターが NULL です。
E_OUTOFMEMORY
メモリが不足しています。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 23 HRESULT InvalidateSidNameCache()

システムの SID 名キャッシュの内容を無効化し、それ以降の新しいユーザー オブジェクトの要求 (IEnumDiskQuotaUsers::Next、IDiskQuotaControl::FindUserSid、IDiskQuotaControl::FindUserName) がドメイン コントローラーからユーザー名を取得するようにします。

戻り値

このメソッドは、次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
E_OUTOFMEMORY
メモリが不足しています。
E_UNEXPECTED
予期しない例外が発生しました。
E_FAIL
SID 名キャッシュが利用できないか、排他的にロックできませんでした。

解説(Remarks)

通常、このメソッドを呼び出す必要はありません。SID 名キャッシュ全体をプログラムから更新する手段を提供するために用意されています。

vtbl 24 HRESULT GiveUserNameResolutionPriority(IDiskQuotaUser* pUser)

指定したユーザー オブジェクトをキューの先頭に昇格させ、次に解決されるようにします。

pUserIDiskQuotaUser*inIDiskQuotaUser インターフェイスへのポインター。

戻り値

このメソッドは、次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
ERROR_NOT_READY
DiskQuotaControl オブジェクトが初期化されていません。
S_FALSE
クォータ ユーザー オブジェクトはリゾルバー キューにありません。
E_UNEXPECTED
予期しない例外が発生しました。
vtbl 25 HRESULT ShutdownNameResolution()

ユーザーのセキュリティ識別子 (SID) をユーザー名に変換します。

戻り値

このメソッドは S_OK を返します。

解説(Remarks)

スレッドの終了後は、非同期の名前解決も停止します。次のメソッドをその後に呼び出すと、SID から名前へのリゾルバー スレッドを再作成できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDiskQuotaControl "{7988B572-EC89-11CF-9C00-00AA00A14F56}"
#usecom global IDiskQuotaControl IID_IDiskQuotaControl "{7988B571-EC89-11CF-9C00-00AA00A14F56}"
#comfunc global IDiskQuotaControl_Initialize                      5 wstr,int
#comfunc global IDiskQuotaControl_SetQuotaState                   6 int
#comfunc global IDiskQuotaControl_GetQuotaState                   7 var
#comfunc global IDiskQuotaControl_SetQuotaLogFlags                8 int
#comfunc global IDiskQuotaControl_GetQuotaLogFlags                9 var
#comfunc global IDiskQuotaControl_SetDefaultQuotaThreshold        10 int64
#comfunc global IDiskQuotaControl_GetDefaultQuotaThreshold        11 var
#comfunc global IDiskQuotaControl_GetDefaultQuotaThresholdText    12 wstr,int
#comfunc global IDiskQuotaControl_SetDefaultQuotaLimit            13 int64
#comfunc global IDiskQuotaControl_GetDefaultQuotaLimit            14 var
#comfunc global IDiskQuotaControl_GetDefaultQuotaLimitText        15 wstr,int
#comfunc global IDiskQuotaControl_AddUserSid                      16 sptr,int,sptr
#comfunc global IDiskQuotaControl_AddUserName                     17 wstr,int,sptr
#comfunc global IDiskQuotaControl_DeleteUser                      18 sptr
#comfunc global IDiskQuotaControl_FindUserSid                     19 sptr,int,sptr
#comfunc global IDiskQuotaControl_FindUserName                    20 wstr,sptr
#comfunc global IDiskQuotaControl_CreateEnumUsers                 21 sptr,int,int,sptr
#comfunc global IDiskQuotaControl_CreateUserBatch                 22 sptr
#comfunc global IDiskQuotaControl_InvalidateSidNameCache          23
#comfunc global IDiskQuotaControl_GiveUserNameResolutionPriority  24 sptr
#comfunc global IDiskQuotaControl_ShutdownNameResolution          25
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。