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

IEnhancedStorageSilo

COM
IID5aef78c6-2242-4703-bf49-44b29357a359継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IEnhancedStorageSilo インターフェイスは IEEE 1667 サイロへのアクセス ポイントであり、サイロ レベルでの情報取得や操作の実行に使用します。

メソッド 5

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

vtbl 3 HRESULT GetInfo(SILO_INFO* pSiloInfo)

サイロ オブジェクトに関連付けられた記述情報を返します。

pSiloInfoSILO_INFO*outサイロに関連付けられた記述情報を格納する SILO_INFO オブジェクトへのポインター。

戻り値

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

戻り値 説明
S_OK
サイロ情報が正常に取得されました。
vtbl 4 HRESULT GetActions(IEnhancedStorageSiloAction*** pppIEnhancedStorageSiloActions, DWORD* pcEnhancedStorageSiloActions)

サイロ オブジェクトで利用可能なすべてのアクションの列挙を返します。

pppIEnhancedStorageSiloActionsIEnhancedStorageSiloAction***outサイロ オブジェクトで利用可能なアクションを表す IEnhancedStorageAction インターフェイス オブジェクトへのポインターの配列。この配列は、サイロで少なくとも 1 つのアクションが利用可能な場合に API 内部で割り当てられます。
pcEnhancedStorageSiloActionsDWORD*out返された IEnhancedStorageAction ポインターの数。この値は pppIEnhancedStorageSilos が表す配列の要素数を示します。

戻り値

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

戻り値 説明
S_OK
1 つ以上の ACT が見つかりました。
E_INVALIDARG
pppIEnhancedStorageSiloActions または pcEnhancedStorageSiloActionsNULL です。

解説(Remarks)

IEnhancedStorageAction インターフェイス ポインターを格納するメモリは Enhanced Storage API によって割り当てられます。返されたポインターを CoTaskMemFree に渡して解放する必要があります。

vtbl 5 HRESULT SendCommand(BYTE Command, BYTE* pbCommandBuffer, DWORD cbCommandBuffer, BYTE* pbResponseBuffer, DWORD* pcbResponseBuffer)

サイロ オブジェクトに raw サイロ コマンドを送信します。このメソッドは、ドライバーによって表現されていないサイロと通信するために使用します。

CommandBYTEin発行するサイロ コマンド。この値の 8 ビットが、デバイスへ送信される CDB の位置 3 のバイト、すなわち SecurityProtocolSpecific フィールドの 2 番目のバイトに配置されます。
pbCommandBufferBYTE*inコマンドの送信データ フェーズでデバイスに送信されるコマンド ペイロード。
cbCommandBufferDWORDinpbCommandBuffer バッファーに含まれるバイト数。
pbResponseBufferBYTE*outコマンドの受信データ フェーズでデバイスからホストに返される応答ペイロード。
pcbResponseBufferDWORD*inoutメソッドの呼び出し時には、pbResponseBuffer のサイズ (バイト単位) を格納します。メソッドの終了時には、返された pbResponse バッファーに含まれるバイト数を格納します。

戻り値

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

戻り値 説明
S_OK
サイロ コマンドが正常に完了しました。
E_INVALIDARG
pbCommandBuffer、pbResponseBuffer、または pcbResponseBuffer パラメーターが NULL です。
HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY)
pbResponseBuffer のサイズが応答データを格納するには不足しています。

解説(Remarks)

このメソッドは現在、IEEE 1667 の証明書サイロおよびパスワード サイロではサポートされていません。代わりに Enhanced Storage Portable Device Commands を使用することを推奨します。

正しいパラメーターをコマンドに渡すこと、および返される結果を格納するために必要なバッファーを割り当てることは、呼び出し元の責任です。

vtbl 6 HRESULT GetPortableDevice(IPortableDevice** ppIPortableDevice)

対応する Enhanced Storage サイロ ドライバーにコマンドを発行するために使用する IPortableDevice ポインターを取得します。

ppIPortableDeviceIPortableDevice**outIPortableDevice オブジェクトへのポインターを受け取るポインター。

戻り値

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

戻り値 説明
S_OK
IPortableDevice へのポインターが正常に取得されました。
E_INVALIDARG
ppIPortableDeviceNULL です。
vtbl 7 HRESULT GetDevicePath(LPWSTR* ppwszSiloDevicePath)

サイロ デバイス ノードへのパスを取得します。返される文字列は、CreateFile や SetupDiOpenDeviceInterface などの Windows システム API に渡すのに適した形式です。

ppwszSiloDevicePathLPWSTR*outサイロ デバイス ノードへのパスを表す文字列へのポインター。

戻り値

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

戻り値 説明
S_OK
デバイス パス文字列が正常に取得されました。
E_INVALIDARG
ppwszSiloDevicePathNULL です。

解説(Remarks)

デバイス パス文字列を格納するメモリは Enhanced Storage API によって割り当てられます。返されたポインターを CoTaskMemFree に渡して解放する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IEnhancedStorageSilo "{5AEF78C6-2242-4703-BF49-44B29357A359}"
#usecom global IEnhancedStorageSilo IID_IEnhancedStorageSilo "{CB25220C-76C7-4FEE-842B-F3383CD022BC}"
#comfunc global IEnhancedStorageSilo_GetInfo            3 var
#comfunc global IEnhancedStorageSilo_GetActions         4 sptr,var
#comfunc global IEnhancedStorageSilo_SendCommand        5 int,var,int,var,var
#comfunc global IEnhancedStorageSilo_GetPortableDevice  6 sptr
#comfunc global IEnhancedStorageSilo_GetDevicePath      7 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。