116 lines
3.0 KiB
C
116 lines
3.0 KiB
C
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name: keys.h
|
|
|
|
Abstract:
|
|
|
|
header file for reusable interface
|
|
|
|
--*/
|
|
|
|
// Abstracted pointer
|
|
typedef void * HKEYLIST;
|
|
|
|
//
|
|
// Retrieves and decodes inbound form data. Builds list of keys, and
|
|
// pointers to data within a content file. Returns handle to first
|
|
// element in the list.
|
|
//
|
|
|
|
HKEYLIST GetKeyList(IN EXTENSION_CONTROL_BLOCK *pECB);
|
|
|
|
//
|
|
// GetKeyInfo extracts the key name and content values from the
|
|
// supplied key, and returns a handle to the next key in the list.
|
|
//
|
|
// The length is the exact length of the inbound data, but a NULL
|
|
// is appended to the data. For example, a text string of five
|
|
// characters has a *pdwLength=5, but GetKeyBuffer returns at
|
|
// least a 6 byte buffer--the five characters and a NULL.
|
|
//
|
|
|
|
HKEYLIST GetKeyInfo(IN HKEYLIST hKey, OUT LPCSTR *plpszKeyName,
|
|
OUT LPDWORD pdwLength, OUT BOOL *pbHasCtrlChars,
|
|
OUT LPINT pnInstance);
|
|
|
|
//
|
|
// GetKeyBuffer returns a pointer to the buffer holding data.
|
|
// Depending on the implementation in keys.cpp, this may or may not
|
|
// be a buffer the exact size of the data (it may be bigger).
|
|
//
|
|
// The data is zero-terminated.
|
|
//
|
|
|
|
LPBYTE GetKeyBuffer(IN HKEYLIST hKey);
|
|
|
|
|
|
//
|
|
// FindKey sequentially searches the linked list for a specific key.
|
|
// The return handle can be used with GetKeyInfo to get more details.
|
|
// FindKey returns the very first occurance of a duplicate key.
|
|
// Also, it searches from the given key which need not be the head
|
|
// key.
|
|
//
|
|
|
|
HKEYLIST FindKey(IN HKEYLIST hKeyList, IN LPCSTR lpszSearchName);
|
|
|
|
|
|
//
|
|
// FreeKeyList releases all of the memory associated with a key list.
|
|
// Also, content resources are deleted.
|
|
//
|
|
|
|
void FreeKeyList(IN HKEYLIST hKeyList);
|
|
|
|
|
|
//
|
|
// GetKeyOffset returns the offset within the internal buffer or
|
|
// the content file. Under normal circumstances, use GetKeyInfo
|
|
// and GetKeyBuffer instead of directly accessing the buffer.
|
|
//
|
|
|
|
DWORD GetKeyOffset(IN HKEYLIST hKey);
|
|
|
|
|
|
#ifdef USE_TEMPORARY_FILES
|
|
//
|
|
// GetContentFile returns the name of the temporary file used
|
|
// to save the content. The temporary file may be open.
|
|
//
|
|
|
|
LPCTSTR GetContentFile(IN HKEYLIST hKeyList);
|
|
|
|
//
|
|
// CloseContentFile forces the content file to be closed. This
|
|
// allows you to pass the file to something else that may open
|
|
// it. Call OpenContentFile before calling any other key
|
|
// function.
|
|
//
|
|
|
|
void CloseContentFile(IN HKEYLIST hKeyList);
|
|
|
|
|
|
//
|
|
// OpenContentFile forces the content file to be reopened.
|
|
// GetKeyBuffer will fail if the content file was closed by
|
|
// CloseContentFile, but not reopened.
|
|
//
|
|
|
|
void OpenContentFile(IN HKEYLIST hKeyList);
|
|
|
|
#else
|
|
|
|
//
|
|
// GetDataBuffer returns a pointer to the start of the data
|
|
// buffer which holds all content. This function is not
|
|
// particularly useful -- use GetKeyBuffer to get a pointer
|
|
// to the buffer for a specific key.
|
|
//
|
|
|
|
LPBYTE GetDataBuffer(IN HKEYLIST hKey);
|
|
|
|
#endif
|
|
|